|
Many of us would
have heard about
ASN.1 Compilers.
The questions
that comes to
mind are : What
is ASN.1? What
is the role of
ASN.1 Compilers?
Where they are
used? and many
more questions.
An one liner
about compilers
is "A program
that translates
source code into
target code".
So ASN.1 Compiler
means, a program
that translates
ASN.1 language
into any programming
language like
C, C++, Java.
Introduction
to ASN.1
Let
us have a overview
of ASN.1 and ASN.1
Compiler. There
are lot many things
to explain about
ASN.1 Compiler.
But here we will
try to get the
basic details
about them.
One of the fundamental
problems faced
by the users communicating
with different
systems is the
efficient transfer
of data in such
a way that the
data received
is the same data
transmitted. ASN.1
(Abstract Syntax
Notation One)
is a flexible
notation that
allows one to
define variety
data types, from
simple types such
as integers and
bit strings to
structured types
such as sets and
sequences, as
well as complex
types defined
in terms of others.
ASN.1 is a formal
notation that
allows specifications
of information
handled by high
level telecom
protocols with
no loss of generality,
regardless of
software or hardware
systems. ASN.1
is a well established
technology that
is widely used
for the ITU-T
(International
Telecommunication
Union) specification
and ISO communication
protocol, for
definition of
abstract syntax's.
The purpose of
ASN.1 is to have
a standardized
and platform independent
language to express
types with and
to have a standardized
set of rules for
the transform
of values of a
defined type,
into a stream
of bytes. This
stream of bytes
can then be sent
on a communication
channel set up
by the lower layers
in the stack of
communication
protocols. This
way two different
applications written
in two completely
different programming
languages running
on different computers
with different
internal representation
of data can exchange
instances of structured
data types instead
of exchanging
bytes or even
worse bits. This
eases the programmer
from a great deal
of work since
no code has to
be written to
process the transport
format of the
data.
ASN.1 provides
the ability to
describe the information
that will be exchanged
independent of
the way that information
is represented
on each of the
communicatingsystems.
The encoding rules
like BER, PER,
XER, DER, describes
how to represent
or encode values
of each ASN.1
type in terms
of bits or byte
streams.
ASN.1 provides
application and
protocol developers
a high level tool,
essentially a
data definition
language, for
defining protocol
syntax and the
information that
an application
exchanges between
systems. ASN.
1 is also increasingly
being used outside
the telecommunication
industry in areas
such as security,
transportation,
banking and business
specifications.
The application
can exchange different
messages. The
abstract syntax
would then describe
in a more condensed
way the whole
set of these messages.
For this, the
abstract syntax
is defined by
means of a grammar
that data to be
transferred should
respect. It is
well known that
data information
is crucial, especially
for linguistic
exchanges at first
and then for developing
a business.
A concrete syntax
is the representation,
in a given programming
language, of the
data structures
to be transferred.
It is called concrete
because it is
actually handled
by applications
and it complies
with the machine
architectures'
restrictions.
The data structures
to be transmitted
should be described
regardless of
the programming
languages. These
are known as abstract
syntax's. This
abstract syntax
is called as Abstract
syntax Notation
or ASN.
ASN.1
offers:
- A simple notation
for abstract
syntax definition,
independent
of the of transfer
syntax (encoding
or decoding)
- ASN.1 is being
increasingly
being used outside
the telecommunication
industry. ASN.1
is catching
the areas biometrics,
that is identity
verification
on physiological
or behavioral
characteristics,
such as fingerprints,
handwriting,
transportation,
banking.
- The abstract
syntax definition
can be easily
mapped to C,
C++, Java, on
a very wide
range of platforms.
Hence provides
rapid development
of implementations
incorporating
much reusable
and bug free
code. Without
having ASN.1
compilers, the
abstract syntax's
has to be mapped
to any of the
programming
languages (manually),
which results
in bugs and
lot of effort
on testing the
written encoders/
decoders.
More
about ASN.1 Compiler
An
ASN.1 Compiler
accepts an ASN.1
specification
and generates
the target code
in C, C++ or Java.
The target code
contains the data
structure to transfer
the syntax values,
by applying the
Transfer syntax
rules underlined
by ITU-T. The
transfer syntax
rules are BER,
PER, which are
incorporated in
library and has
to be linked with
the target code
and an application.
The application
should populate
the data structures
generated.
The generated
code (target code)
need not be compiled
all the time.
It needs to be
compiled only
when the ASN.1
specification
is changed. The
application can
send different
data each time,
the library will
take care of sending
or receiving (encoding
or decoding) them.
Conclusion
In summary, both
the systems use
the same syntax,
but may use different
architecture to
transfer the messages.
Hence, ASN.1 is
an internationally
standardized,
vendor independent,
platform independent
and language independent
notation for specifying
data structures
at a high level
of
abstraction.
References
ITU-T standards
:
- X.680
- X.681
- X.682
- X.683
- X.690
- X.691
- ASN.1 Book
(Communication
between heterogeneous
systems, by
Olivier Dubuisson
|